package br.eng.eliseu.gwt.gestaoWeb.model.usuario;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.eng.eliseu.gwt.gestaoWeb.model.BaseEntity;
import br.eng.eliseu.gwt.gestaoWeb.model.empresa.EmpresaSistema;

@Entity
@SequenceGenerator(name="SQ_USUARIOSISTEMA", sequenceName="SQ_USUARIOSISTEMA")
@NamedQueries({
	@NamedQuery(name = "usuarioSistema.porUsuarioSistema", query = "select u from UsuarioSistema u where 1=1 "+
			"and u.usuario = :usuario "+
			"and u.empresaSistema = :empresaSistema "),
	@NamedQuery(name = "usuarioSistema.porUsuario", query = "select u from UsuarioSistema u where 1=1 "+
			"and u.usuario = :usuario "+
			"and u.dtFim is null "),
	@NamedQuery(name = "usuarioSistema.porUsuarioTodos", query = "select u from UsuarioSistema u where 1=1 "+
			"and u.usuario = :usuario ")

	})
public class UsuarioSistema extends BaseEntity{

	private static final long serialVersionUID = 2646870564089416742L;

	public UsuarioSistema(){}
	
	@Id
	@GeneratedValue(generator="SQ_USUARIOSISTEMA", strategy=GenerationType.AUTO)
	private Integer id;

	@ManyToOne
	@JoinColumn(name="usuario_id")
	private Usuario usuario;
	
	@ManyToOne
	@JoinColumn(name="empresaSistema_id")
	private EmpresaSistema empresaSistema;
	
	@Column(length=15)
	@Enumerated(EnumType.STRING)
	private DireitoUsuarioEnum direito;
	
	@Enumerated(EnumType.STRING)
	@Column(length=10)
	private StatusUsuarioEnum status;
	
	@Column(length=254)
	private String email;
	
	@Temporal(value=TemporalType.DATE)
	private Date dtInicio;
	
	@Temporal(value=TemporalType.DATE)
	private Date dtFim;

	
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public EmpresaSistema getEmpresaSistema() {
		return empresaSistema;
	}
	public void setEmpresaSistema(EmpresaSistema empresaSistema) {
		this.empresaSistema = empresaSistema;
	}
	public DireitoUsuarioEnum getDireito() {
		return direito;
	}
	public void setDireito(DireitoUsuarioEnum direito) {
		this.direito = direito;
	}
	public StatusUsuarioEnum getStatus() {
		return status;
	}
	public void setStatus(StatusUsuarioEnum status) {
		this.status = status;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getDtInicio() {
		return dtInicio;
	}
	public void setDtInicio(Date dtInicio) {
		this.dtInicio = dtInicio;
	}
	public Date getDtFim() {
		return dtFim;
	}
	public void setDtFim(Date dtFim) {
		this.dtFim = dtFim;
	}
}
